<?php
/**
 * RegistrationForm class.
 *
 * @package    IPLIFE
 * @author     Alexey Shapran (alexey.shapran@gmail.com)
 */
class RegistrationForm extends BasesfGuardUserForm
{
	public function configure()
	{
		$this->useFields(array( 'id', 'username', 'password', 'firstname', 'lastname', 'company', 'address', 'phone', 'website', 'additional', 'image' ));

		$this->setWidget('password', new sfWidgetFormInputPassword(array(),array('autocomplete'=>'off')));
		$this->setWidget('password_confirm', new sfWidgetFormInputPassword());
		$this->setWidget('nickname', new sfWidgetFormInputText());

		$this->widgetSchema->moveField('password_confirm', sfWidgetFormSchema::AFTER, 'password');
		$this->setWidget('region_id', new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('Region'), 'add_empty' => true)) );
		if($this->isNew()) {
			$this->setWidget('group_id', new sfWidgetFormChoice(array(
				'expanded'=>true, //set radio buttons type
				'choices'=>array('4'=>'Пользователь', '5'=>'Продавец', '3'=>'Провайдер')
			)));
			$this->widgetSchema->moveField('group_id', sfWidgetFormSchema::AFTER, 'password_confirm');
		}

		$this->widgetSchema->setLabels(array(
				'username'=>'E-mail',
				'password'=>'Пароль',
				'password_confirm'=>'Повтор пароля',
				'firstname'=>'Имя',
				'lastname'=>'Фамилия',
				'company'=>'Название компании',
				'address'=>'Адрес',
				'phone'=>'Тел/факс',
				'region_id'=>'Регион',
				'website'=>'Веб сайт',
				'additional'=>'Личная информация для блога',				
				'group_id'=>'Кто вы?',
				'nickname'=>'Псевдоним для форума'
				));

				$this->widgetSchema->setHelps(array(
				'username'=>'Введите ваш действующий E-mail адрес (будущий логин)',
				'password'=>'Введите ваш пароль (6-128 символов)',
				'password_confirm'=>'Введите ваш пароль еще раз',
				'firstname'=>'Введите ваше имя (2-255 символов)',
				'lastname'=>'Фамилия',
				'company'=>'Название компании',
				'address'=>'Адрес',
				'phone'=>'Тел/факс',
				'website'=>'Веб сайт',
				'additional'=>'Дополнительная информация',
				'group_id'=>'Выберите вашу группу',
				'image'=>'Аватар/лого (jpg,gif,png не более 100Kb)',
				'nickname'=>'Уникальный псевдоним для форума, минимум - 3 буквы'
				));


				$this->widgetSchema['image'] = new sfWidgetFormInputFileEditable(array(
			'file_src'  => sfConfig::get('sf_upload_dir').'/avatars/'.$this->getObject()->getImage(),
			'is_image'  => true,
			'delete_label' => 'Удалить изображение',
			'edit_mode' => !$this->isNew(),
			'template'  => ($this->getObject()->getImage())	?	'<div><img width="40px" src="/uploads/avatars/'.$this->getObject()->getImage().'" /><br />%input%<br />%delete% %delete_label%</div>'
			:	'<div>%input%<br />%delete% %delete_label%</div>'
			));
			$this->widgetSchema['image']->setLabel('Аватар/лого');
			/* Validators block */
			$this->validatorSchema['username'] = new sfValidatorEmail(array(),array('invalid'=>'Введите корректный E-mail адрес'));
			$this->validatorSchema['firstname'] = new sfValidatorString(array('min_length'=>2,'max_length' =>255, 'required' => true),
			array('min_length'=>'Минимальная длинна - 2 символа','max_length'=>'Максимальная длинна - 64 символа' ));
			$this->validatorSchema['lastname'] = new sfValidatorString(array('min_length'=>2,'max_length' =>255, 'required' => true),
			array('min_length'=>'Минимальная длинна - 2 символа','max_length'=>'Максимальная длинна - 64 символа' ));
			if($this->isNew()) {
				$this->validatorSchema['group_id'] = new sfValidatorChoice(array('choices'=>array('3','4','5'))); //3,4,5 - ID's of user groups
				$this->validatorSchema['password'] = new sfValidatorString(	array('min_length' =>6,'max_length' =>128,'required' => true), array('min_length'=>'Минимальная длинна - 6 символов','max_length'=>'Максимальная длинна - 128 символов'));
				$this->validatorSchema['password_confirm'] = new sfValidatorString(	array('required' => true));
				$this->validatorSchema['region_id'] = new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('Region'), 'required' => true));
			} else {
				$this->validatorSchema['password'] = new sfValidatorString(	array('min_length' =>6,'max_length' =>128,'required' => false),	array('min_length'=>'Минимальная длинна - 6 символов','max_length'=>'Максимальная длинна - 128 символов'));
				$this->validatorSchema['region_id'] = new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('Region'), 'required' => true));
				$this->validatorSchema['password_confirm'] = new sfValidatorString(	array('required' => false));
			}

			$this->validatorSchema['nickname'] = new sfValidatorString(array('min_length'=>'3'),array('min_length'=>'Такой псевдоним уже используется на форуме'));

			$this->validatorSchema->setPostValidator(new sfValidatorAnd(array(
			new sfValidatorSchemaCompare('password',sfValidatorSchemaCompare::EQUAL,'password_confirm',array(),array('invalid'=>'Пароли должны совпадать')),
			new sfValidatorDoctrineUnique(array('model'=>'SfGuardUser','column'=>'username'), array('invalid'=>'Пользователь с таким e-mail уже существует'))
			)));

			$this->validatorSchema['image'] = new sfValidatorFile(array(
			'required'   => false, 
			'path'       => sfConfig::get('sf_upload_dir').'/avatars', 
			'mime_types' => 'web_images',
			'max_size' => 100*1024 //100Kb
			), array(	'max_size'=>'Максимальные размер картинки 100КБ',
						'mime_types'=>'Поддерживаемые форматы GIF, JPG, PNG'));
			/* End Validators block */
	}
}